1
תגובות
הדף הזה אף פעם לא נותן לצד לקוח תגובה של סיום
xmlhttp.readyState==4&&xmlhttp.status==200

וזה למרות שהוא סיים את הטעינה שלו
כדי שבאמת הוא יסיים את הטעינה שלו אני צריך לסגור את הכרטיסייה ולעלות שחזור של הכרטיסיה שנסגרה ואז כשהדף עולה מקאש הצד לקוח מזהה שהדף סיים טעינה
<?
header("Content-Type:text/xml;charset=utf-8");
$id=$_COOKIE['id'];

ignore_user_abort(true);
set_time_limit(0);

echo '<?xml version="1.0"?>'.str_repeat("\t",2025);

do
{
  sleep(3);
  print "\n";
  flush();
  ob_flush();
  if(connection_status()!=0) die;
  $re=mysql_fetch_row(mysql_query("SELECT p FROM hosts WHERE id=$id LIMIT 1"));
}
while($re[0]==0);

mysql_query("DELETE FROM hosts WHERE id=$id");
$p=mysql_fetch_row(mysql_query("SELECT name,img from users WHERE id=$re[0]"));
echo '<r><id>'.$re[0].'</id><n>'.$p[0].'</n><i>'.$p[1].'</i></r>';
ob_end_flush();


ואני מתכוון שהדף באמת סיים את הטעינה ואפילו רואים בכלי פיתוח של כרום שהדף כבר לא מתעדכן כל 3 שניות וכבר החזיר את כל הפלט הסופי..

1 תשובות

avatar ענה intval ב 31 למאי 2013 #

הבעיה היא לא אם OB אלה עם איך שעובד HTTP.
כהנתונים מועברים חלק אחרי חלק ולא בבת אחת - השרת מחזיר תשובה ללקוח בחלקים
Content-Encoding: Chunked
כנראה מאיזה-שהי סיבה הדפדפן לא מצליח לזהות שהגיע הצ'אנק האחרון.

אולי במקרה שלך הסטטוס הוא לא 200?
תנסה לרשום לקונסול את הסטטוס והסטייט כשהם משתנים ותראה לאן זה מגיע בסיום הסקריפט.